Amazon Elastic MapReduceのリリースバージョンの差異
小ネタです。今年の7月にAmazon EMRのリリース4.0.0がリリースされ、最近では4.2.0もリリースされました。このリリース4系と従来のバージョン2系および3系は基本的な利用法は変わっていませんが構築されるHadoopクラスタの中身が別物になっています。私も最初はその違いがよく分からなかったので、今回はその違いについて説明します。なお、今回説明する差分の一覧は公式ドキュメントにまとめて記述されています。
バージョンの言い方がEMR releaseに変わった
まずEMRのバージョンの言い方が変わりました。2系および3系まではAMI Versionという言い方でしたが、4系からはEMR releaseという言い方に変わっています。実際にマネジメントコンソールで[Release]の一覧を表示すると以下のようになっています。
- 4系: EMR release - Hadoop2
- 3系: AMI Version - Hadoop2
- 2系: AMI Version - Hadoop1
更にRunJobFlow APIで指定する際のパラメーターの名称もAmiVersionからReleaseLabelに変わっています。そのためAWS CLIの引数でもEMR release 4系を利用する際は--ami-versionではなく--release-labelで指定する形に変わっています。
基本的にコミュニティ版のHadoopと同じ構成になった
AMI Version 2系および3系までのEMRが提供するHadoopはAWS独自のHadoopディストリビューションと言っても良いぐらいコミュニティ版のHadoopと差異がありました。具体的には各種サービスのポート番号であったり、インストールパスやログのパス、デーモンを起動するOSユーザーがコミュニティ版と異なっていました。EMR release 4系からはこれらが基本的にコミュニティ版に揃うようになりました。これらの差分は一覧にして公式ドキュメントに書かれていますのでご参照下さい。[Service Ports]、[Users]、[Installation Sequence, Installed Artifact, and Log File Locations]のTopicです。
背景としてEMR上で利用できるHadoopやSparkのようなアプリケーションのバージョンアップを早めるためEMRのパッケージングにApache Bigtopを利用するようになり、そのタイミングで基本的にコミュニティ版と同じ構成としたようです。実際、Spark1.5.0がリリースされた3週間後にEMR release4.1.0がリリースされSpark1.5.0が含まれていました。
AWSのドキュメントが分離された
ドキュメント事体も2系および3系と4系では分けられています。ですので、Googleなどで検索した際に意図したバージョンとは異なるバージョンのドキュメントを参照する可能性があるので気をつけて下さい。私は最初にドキュメント事体が分離されたことに気づかずかなり混乱していました(^_^;)
現時点で2系および3系のドキュメントにアクセスすると先頭に以下のような警告が表示されるようになっているようです。
なお、公式ドキュメントの言語設定を日本語にすると現時点では4系のドキュメントへのリンク事体が表示されないため言語はEnglishとして下さい。日本語で表示される[開発者ガイド(日本語)]のリンク先は2系および3系の日本語ドキュメントになっています。
その他の違い
その他に以下のような差分があります。詳細は公式ドキュメントをご参照下さい。
- アプリケーションの追加をStepではなくApplicationとして追加するようになった
- Hadoopなどの設定をBootstrap ActionではなくConfigurationとして指定するようになった
- script-runner.jarの代わりにcommand-runner.jarを利用するようになった
3系のメンテナンスはどうなっているのか
公式ドキュメントのAMI Versionsの一覧ページを参照した所、3系については継続的にアップデートが実施されているようです。現時点で最新版は2015-10-02にリリースされた3.10.0でした1。AMI Versionはリリース後18ヶ月は保持されるため、現在EMR3系を利用されている方も余裕を持って4系へ移行できるかと思います。
まとめ
ということでEMRのリリースバージョンに関する解説でした。分散処理基盤をサービスとして提供してくれるEMRサービスとしての使い方に差はないのですが、慣れるまでは混乱しやすい部分かと思いますのでこのエントリーがお役に立てば幸いです。
- 英語版のドキュメントの話です。日本語版だと3.8.0までしか反映されていませんでした。 ↩